--[[
描述 ： 滑动控件
作者 ： 付大志
时间 ： 13/08/21
]]
UISlideView = Class(MLView,'UISlideView');

UISlideView.mViewCtrl       = nil;       -- 所属viewCtrl
UISlideView.DEFAULT_HEIGHT    = AH(30); -- 默认高度
UISlideView.DEFAULT_BAR_HEIGHT  = AH(20); -- 默认高度

UISlideView.mWidth        = nil;       -- 宽度
UISlideView.mHeight       = nil;       -- 高度

UISlideView.bgImage         = nil;       -- 背景图片
UISlideView.fullImage       = nil;       --  填充图片
UISlideView.barImage      = nil;       --  bar图片

UISlideView.mIsFocus        = nil;       -- 是否聚焦
UISlideView.mDownX          = nil;       -- 触摸屏x坐标
UISlideView.mDownY          = nil;       -- 触摸屏Y坐标

UISlideView.mFullView       = nil;       --  填充view
UISlideView.mBarView      = nil;       --  bar  view

UISlideView.mBarWH          = nil;       --  bar 高宽
UISlideView.mBgWidth        = nil;
UISlideView.mBgHeight       = nil;

UISlideView.mFullx          = nil;
UISlideView.mSlideWidth     = nil;       -- 可滑动宽度
UISlideView.mCurPos           = 0;         -- 当前位置
UISlideView.mOnProgress       = nil;       -- 进度监听
UISlideView.mCurProgress      = 0;         --当前进度

--[[
功能   ： 初始化 UISlideView 控件
参数   ： cuePos   --  当前位置，是百分比  0.1-1.0
          width    --  宽度
          debugInfo   --  调试信息（可选）
返回   ： UISlideView 实例
]]

function UISlideView:init(curPos, width, viewCtrl, id)

  self:initView(width, UISlideView.DEFAULT_HEIGHT, viewCtrl, id);
  self.id = id;
  self.mBarWH =  UISlideView.DEFAULT_HEIGHT;
  self.mViewCtrl  = viewCtrl ;
  -- 初始化
  self.mWidth =  width;
  self.mHeight = UISlideView.DEFAULT_HEIGHT;

  self.mBgWidth  = self.mWidth - self.mBarWH;

  self.mSlideWidth = self.mBgWidth;
  self.mBgHeight =  UISlideView.DEFAULT_BAR_HEIGHT;

  self.bgImage = UIImage.imageName(UITheme.UISLIDEVIEW_BG);
  self.fullImage = UIImage.imageName(UITheme.UISLIDEVIEW_FULL);
  self.barImage =  UIImage.imageName(UITheme.UISLIDEVIEW_BTN);

  self.mFullx = self.mBarWH/2;
  self.mCurPos = curPos * self.mSlideWidth;
  self.mCurPos= self.mCurPos-self.mCurPos%1; -- 取整数

--    self.mCurPos = self:getBackData(self.id, 0);

  return self;

end

function UISlideView:makeView()
  -- body
  -- 添加背景
  local bgView =  UIImageView.new():init(self.bgImage, self.mBgWidth, self.mBgHeight,self.mViewCtrl);
  bgView:show();
  self:add(bgView, self.mFullx, (self.mHeight-self.mBgHeight)/2);
  -- 上层颜色调
  self.mFullView =  UIImageView.new():init(self.fullImage, self.mBgWidth, self.mBgHeight,self.mViewCtrl);
  self.mFullView:show();
  self:add(self.mFullView, self.mFullx, (self.mHeight-self.mBgHeight)/2);
  self.mFullView:setWH(self.mCurPos, self.mBgHeight);
  -- 按钮
  self.mBarView =  UIImageView.new():init(self.barImage, self.mHeight, self.mHeight,self.mViewCtrl);
  self.mBarView:show();
  -- self.mBarView.onPoint = function (evt, x, y)
  self.onPoint = function (evt, x, y)
    -- body
    local interval =  self.LOSE_FOCUS_INTERVAL;
    if evt == MLView.PointDown then
      self.mDownX = x;
      self.mDownY = y;
      if x > self.mCurPos and x < (self.mCurPos + self.mBgHeight*2) then  -- 点击bar
        self.mIsFocus= true;
      end
    elseif evt == MLView.PointUp then
      self.mIsFocus = false;
    elseif evt == MLView.PointMove then
      if self.mIsFocus == true then
        local interval = x-self.mDownX;
        if interval < 0 then
          self.mCurPos = self.mCurPos + interval;
          if self.mCurPos < 0 then
            self.mCurPos = 0;
          end
          self.mCurProgress = self.mCurPos / self.mSlideWidth*100;
          if self.mOnProgress then
            self.mCurProgress = self.mCurProgress-self.mCurProgress%1; -- 取整数
            -- self:mOnProgress(self.mCurProgress);
            self.mOnProgress(self.mCurProgress);
          end
          self:draw();
        else
          self.mCurPos = self.mCurPos + interval;
          if self.mCurPos > self.mSlideWidth then
            self.mCurPos = self.mSlideWidth;
          end
          self.mCurProgress = self.mCurPos / self.mSlideWidth*100;
          if self.mOnProgress then
            self.mCurProgress= self.mCurProgress-self.mCurProgress%1; -- 取整数
            -- self:mOnProgress(self.mCurProgress);
            self.mOnProgress(self.mCurProgress);
          end
          self:draw();
        end
      end
    end
    -- self:draw();
    self.mDownX=x;
    return 1;  -- 事件不拦截
  end
  self.mBarView.parent = self;
  self:add(self.mBarView, self.mCurPos, 0);
end


--[[
功能   ： 得到控件高度
参数   ： 无
返回   ： 无
]]
function UISlideView:getHeight()
  return UISlideView.DEFAULT_HEIGHT;
end

--[[
功能   ： 设置进度
参数   ： 无
返回   ： 无
]]
function UISlideView:setPos(progress)

  self.mCurPos = progress * self.mSlideWidth;
  self.mCurPos= self.mCurPos-self.mCurPos%1; -- 取整数
  self:draw();
end
--[[
功能   ： 画控件
参数   ： 无
返回   ： 无
]]
function UISlideView:draw()
  local w, h = self.mFullView:getWH();
  self.mFullView:setWH(self.mCurPos, h);
  self.mFullView:setBg(self.fullImage);
  self.mBarView:setXY(self.mCurPos, 0);
    
--    self:backData(self.id, self.mCurPos);

end

--[[
功能   ： 恢复控件
参数   ： 无
返回   ： 无
]]
function UISlideView:onResume()
    --self.mCurPos = self:getBackData(self.id, self.mCurPos);
end

--[[
功能   ： 暂停控件
参数   ： 无
返回   ： 无
]]
function UISlideView:onPause()
    --self:backData(self.id, self.mCurPos);
end

--[[
功能   ： 显示控件
参数   ： 无
返回   ： 无
]]
function UISlideView:show()
  self:makeView();
end

--[[
功能   ： 更新控件
参数   ： 无
返回   ： 无
]]
function UISlideView:update() 
   self:show();
end



--[[ 使用方法

-- local v = UISlideView.new():init(1, AW(150),self);
-- v.mOnProgress = function (v)
--   print('Setting:progrss', v);--v 为进度
-- end
-- rootView:add(v, 0, 0);
--]]
